// jwt 权限校验  
// jwt ： json web token ，判断接口是否有操作权限的；
const express = require("express");
const static = express.static;
const jwt = require("jsonwebtoken");
let app = express();
app.use(static(__dirname + "/static"));

app.use(express.json());
app.get("/login", (req, res) => {
  res.sendFile(__dirname + "/views/login.html");
})

app.get("/index", (req, res) => {
  res.sendFile(__dirname + "/views/index.html");
})


app.post("/checkUser", (req, res) => {
  // 校验用户名和密码是否正确？
  console.log(req.body);
  // 用户名是张三  ， 密码是123；
  let { username, pwd } = req.body;
  if (username === "张三" && pwd === "123") {
    // jwt.sign(payload,秘钥,过期时间)
    let token = jwt.sign({
      myname: "hello"
    }, "mysecret", { expiresIn: "2h" });

    /* 
    eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJteW5hbWUiOiJoZWxsbyIsImlhdCI6MTcxMzM0MjgxNywiZXhwIjoxNzEzMzUwMDE3fQ.ZRuILio38W-CKeg9hP-lGfsV8dqIaCXs4pvsrP9Mk0Y
    
    */
    res.json({
      info: "用户名和密码正确",
      status: 1,
      token
    })
  } else {
    res.json({
      info: "用户名或者密码错误",
      status: 0
    })
  }


})

app.get("/getlist", (req, res) => {
  // 获取token 做校验 ，校验token是否正确 ，如果正确就返还数据，如果不正确，返还403 或者是401状态码，给错误提示；
  let token = req.headers.authorization
  // console.log(req.headers);
  if (!token) {
    // 没有token 那么直接返还 401 给错误提示 
    res.status(401).json({ info: "token不存在" });
  } else {
    // 有token ，校验token是否正确 ，如果正确返还数据，如果不正确返还403和错误提示；
    jwt.verify(token, "mysecret", (err, decoded) => {
      console.log(decoded);
      if (err) {
        res.status(403).json({ info: "token不正确" });
      } else {
        res.json([{ name: "张三", age: 20 }, { name: "李四", age: 21 }])
      }
    })
  }
})
app.listen(8989);